package com.ziyun.pop.web.modules.goodsCategory.controller;

import java.util.Map;

import com.utility.JsonUtils;
import com.utility.New;
import com.utility.http.HttpUtils;
import com.ziyun.pop.common.utils.UserUtils;
import com.ziyun.pop.modules.supp.entity.SellerInfoEntity;
import com.ziyun.pop.modules.supp.service.SellerInfoService;
import org.apache.catalina.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import io.renren.common.utils.R;



/**
 * 商品分类表
 *
 * @author
 * @email
 * @date 2018-08-17 13:22:48
 */
@RestController
@RequestMapping("goodsCategory/goodscategory")
public class GoodsCategoryController {
    private  static Logger logger = LoggerFactory.getLogger(GoodsCategoryController.class);

    @Value("${erpApi}")
    private String erpApi ;

    @Autowired
    private SellerInfoService sellerInfoService;

//    /**
//     * 列表
//     */
//    @RequestMapping("/list")
//    @RequiresPermissions("goodsCategory:goodscategory:list")
//    public List<GoodsCategoryEntity> list(@RequestParam Map<String, Object> params){
//        List<GoodsCategoryEntity> goodsCategoryEntityList = goodsCategoryService.selectList(new QueryWrapper<GoodsCategoryEntity>().eq("disabled", 0));
////        for(GoodsCategoryEntity goodsCategoryEntity : goodsCategoryEntityList){
////            GoodsCategoryEntity parentGoodsCategoryEntity = goodsCategoryService.selectById(goodsCategoryEntity.getParentCategoryId());
////            if(parentGoodsCategoryEntity != null){
////                goodsCategoryEntity.setParentName(parentGoodsCategoryEntity.getCategoryName());
////            }
////        }
//
//        return goodsCategoryEntityList;
//    }
//
//
//    /**
//     * 信息
//     */
//    @RequestMapping("/info/{categoryId}")
////    @RequiresPermissions("goodsCategory:goodscategory:info")
//    public R info(@PathVariable("categoryId") String categoryId){
//        Integer catId = StringUtil.getRequestParamInteger(categoryId);
//        return goodsCategoryService.info(catId);
//    }
//
//    /**
//     * 保存
//     */
//    @RequestMapping("/save")
//    @RequiresPermissions("goodsCategory:goodscategory:save")
//    public R save(@RequestBody GoodsCategoryEntity goodsCategory){
//        goodsCategory.setCreateName(UserUtils.getCurentUser().getUsername());
//        goodsCategoryService.insertGoodsCategoryAndCategoryRelation(goodsCategory);
//        return R.ok();
//    }
//
//    /**
//     * 修改-->废弃
//     */
//    @RequestMapping("/update")
//    @RequiresPermissions("goodsCategory:goodscategory:update")
//    public R update(@RequestBody GoodsCategoryEntity goodsCategory){
//        ValidatorUtils.validateEntity(goodsCategory);
////        goodsCategoryService.updateAllColumnById(goodsCategory);//全部更新
//        goodsCategoryService.updateGodosCategory(goodsCategory);
//
//        return R.ok();
//    }
//
//    /**
//     * 删除
//     */
//    @RequestMapping("/delete")
//    @RequiresPermissions("goodsCategory:goodscategory:delete")
//    public R delete(@RequestBody String categoryId){
////      goodsCategoryService.deleteBatchIds(Arrays.asList(categoryIds));
////        Integer requestParamInteger = StringUtil.getRequestParamInteger(categoryId);
//        Integer requestParamInteger = Integer.parseInt(StringUtil.toStr(categoryId).trim());
//        goodsCategoryService.flagDel(requestParamInteger);
//        return R.ok();
//    }
//    /**
//     * 选择菜单(添加、修改菜单)
//     */
//    @RequestMapping("/select")
//    public R select() {
//        List<GoodsCategoryEntity> goodsCategoryEntityList = goodsCategoryService.select();
//        return R.ok().put("goodsCategoryEntityList",goodsCategoryEntityList);
//    }
//
//    /**
//     * 按categoryId获得其子分类集合
//     */
//    @RequestMapping("/getSonCategory/{categoryId}")
//    public R getSonCategory(@PathVariable("categoryId") Integer categoryId){
//        HashMap<String, Object> map = new HashMap<>();
//        map.put("disabled",0);
//        map.put("parent_category_id",categoryId);
//        List<GoodsCategoryEntity> goodsCategoryList = goodsCategoryService.selectByMap(map);
//
//        return R.ok().put("goodsCategoryList", goodsCategoryList);
//    }
//
    /**
     * 按categoryId获得三级分类全称和商品模板对象
     */
    @RequestMapping("/getCatNames/{categoryId}")
    public R getCatNames(@PathVariable("categoryId") Integer categoryId){
//        List<GoodsCategoryEntity> goodsCategoryList = goodsCategoryService.getCatNamesByCategoryId(categoryId);
//        StringBuffer categoryNames = new StringBuffer();
//        for (GoodsCategoryEntity goodsCategoryEntity:goodsCategoryList) {
//            categoryNames.append(goodsCategoryEntity.getCategoryName());
//            categoryNames.append("->");
//        }
//        GoodsCategoryEntity categoryEntity = goodsCategoryService.selectById(categoryId);
//        categoryNames.append(categoryEntity.getCategoryName());
//        //根据分类id获得商品模板对象
//        GoodsTemplateEntity goodTemplate = goodsTemplateService.getTemplateByCatId(categoryId);
//        //判断模板对象是否含有工艺选项
//        String attributeTypes = goodsTemplateService.getAttributeTypes(goodTemplate.getTemplateId());
//        if(attributeTypes.contains("craft")){
//            goodTemplate.setIncludCraft(true);
//        }else{
//            goodTemplate.setIncludCraft(false);
//        }
        Long sellerId = UserUtils.getCurentUser().getSellerId();
        SellerInfoEntity sellerInfo = sellerInfoService.getById(sellerId);
        String path = "/goodsCategory/goodscategory/getCatNames";
        Map<String, Object> map = New.hashMap();
        map.put("categoryId",categoryId);
        Map<String, Object> resultMap = remoteProcedureCall(map, path);
        return R.ok().put("categoryNames", resultMap.get("categoryNames")).put("goodTemplate",resultMap.get("goodTemplate")).
                put("categoryEntity",resultMap.get("categoryEntity")).put("sellerInfo",sellerInfo).
                put("unitLibraryList",resultMap.get("unitLibraryList"));
    }
//
//    /**
//     * 接收表单数据,更新goods_category和goods_category_relation
//     */
//    @PostMapping("updateCategory")
//    public R updateCategory(GoodsCategoryVO goodsCategoryVO) {
//        goodsCategoryService.updateGoodsCategoryAndCategoryRelationById(goodsCategoryVO);
//        return R.ok();
//    }
//
//    /**
//     * 获取商品类型枚举
//     */
//    @GetMapping("/getGoodsType")
//    public R getGoodsType() {
//        return goodsCategoryService.getGoodsType();
//    }
//
    /**
     * 获取商品分类树
     * @return
     */
    @RequestMapping("/getCategoryTree")
//    @RequiresPermissions("quoteProduct:quoteproductbaseinfo:info")
    public R getAddInfo(){
//        Map addInfoMap = goodsCategoryService.getAddInfo();
        String path = "/goodsCategory/goodscategory/getCategoryTree";
        Map<String, Object> map = New.hashMap();
        map.put("disabled",0);
        Map<String, Object> resultMap = remoteProcedureCall(map, path);
        return R.ok().put("addInfo",resultMap.get("addInfo"));
    }

    /**
     * 远程调用方法封装
     * @param params
     * @return
     */
    private Map<String, Object> remoteProcedureCall(@RequestParam Map<String, Object> params,String path) {
        String url = erpApi + path;
        logger.info("============= erpApi url："+url+"============");
        Map<String, Object> paramHeaderMap = New.hashMap();
        Map<String, Object> paramBodyMap = New.hashMap();
        paramBodyMap.put("params",params);
        logger.info("============= erpApi params："+params+"============");
        String response = HttpUtils.doPost(url, paramHeaderMap, JsonUtils.map2String(paramBodyMap));
        logger.info("============= erpApi params："+response+"============");
        return com.ziyun.pop.common.utils.JsonUtils.jsonToMap(response);
    }
}
